package com.work.demo.enumdemo;

/**
 * 异常枚举定义,在各类中，递增使用
 * 1类：系统类，例：空指针，脏数据等，code:100002
 * 2类：业务类，例：提单号不存在
 * 3类：校验类，例：id不能为空
 */
public enum ExceptionEnum {
	CODE10000("10000", "后台服务异常，请联系管理员"),
	CODE10001("10001", "修改分段信息失败"),

	CODE20000("20000", "未勾选客户信息"),
	CODE20001("20001", "提单号已存在"),
	CODE20002("20002", "船信息拉取失败"),
	CODE20003("20003", "获取集行通令牌失败"),
	CODE20004("20004", "获取集行通令牌时响应为空"),
	CODE20005("20005", "船名模糊查询时响应为空"),
	CODE20006("20006", "查询eir详情信息失败,可重新获取eir编号后重试"),
	CODE20007("20007", "运输单不存在"),
	CODE20008("20008", "只有20尺箱型能双托"),
	CODE20009("20009", "运单已是双托状态"),
	CODE20010("20010", "添加失败，请仔细核对录入信息"),
	CODE20011("20011", "序号只能输入正整数"),
	CODE20012("20012", "预录失败，请核对必填信息"),
	CODE20013("20013", "该运单没有eir编号，不能转单哦"),
	CODE20014("20014", "没有改用户的自定义设置"),
	CODE20015("20015", "创建票号异常，请联系管理员^_^"),
	CODE20016("20016", "以下箱号已存在\n"),
	CODE20017("20017", "手机号格式错误"),
	CODE20018("20018", "名称不能为空"),
	CODE20019("20019", "请选择做箱日期或账期的开始和结束时间"),
	CODE20020("20020", "账期开始日期和结束日期必须小于当前月份"),
	CODE20021("20021", "当前运单已是分段运单，请勾选选择原始运单"),
	CODE20022("20022", "税点必须为正整数"),
	CODE20023("20023", "委托主体不能为空"),
	CODE20024("20024", "客户名称不能为空"),
	CODE20025("20025", "油价不能为空"),
	CODE20026("20026", "油价不能为0"),
	CODE20027("20027", "油价未设置，请先前往首页设置油价"),
	CODE20028("20028", "该运输单无eir信息，不能发起暂落箱"),
	CODE20029("20029", "做箱日期不能为空"),
	CODE20030("20030", "未找到符合导出条件的运单信息"),
	CODE20031("20031", "要导出的运单没有录入有效的费用信息"),
	CODE20032("20032", "进口业务不能进行箱货对比"),
	CODE20033("20033", "请先填写好箱号信息"),
	CODE20034("20034", "未找到箱货信息"),
	CODE20035("20035", "未找到相应的箱货信息，请核对提单号和箱号"),
	CODE20036("20036", "未识别到要提交到自定义排序参数，请联系管理员查看"),
	CODE20037("20037", "该月没有需要重新计算的运单"),
	CODE20038("20038", "油耗设置不能为空"),
	CODE20039("20039", "请点击选择一个设置好油耗的月份"),
	CODE20040("20040", "手机号或密码不能为空"),
	CODE20041("20041", "手机号码格式错误，请重新输入"),
	CODE20042("20042", "当前手机号码并未在业务系统中录入，请联系业务人员"),
	CODE20043("20043", "当前手机号码并未开通微信公众号权限，请联系业务人员开通"),
	CODE20044("20044", "手机号或密码错误"),
	CODE20045("20045", "图片格式错误"),
	CODE20046("20046", "没有符合条件的数据可以导出"),
	CODE20047("20047", "已关账的运单不能删除增补单"),
	CODE20048("20048", "当前运单暂无派车信息"),
	CODE20049("20049", "消息信息类型参数错误，请仔细查看接口文档"),
	CODE20050("20050", "费用已提交工作流，不能作废"),
	CODE20051("20051", "承运人手机号不能为空"),
	CODE20052("20052", "用户名不存在或者密码错误"),
	CODE20053("20053", "用户名或密码匹配失败，请联系管理员查看"),
	CODE20054("20054", "登录角色类型不能为空"),
	CODE20055("20055", "用户名或密码不能为空"),
	CODE20056("20056", "登录角色类型参数不正确"),

	CODE21000("21000", "暂无数据"),
	CODE21001("21001", "数据错误"),

	CODE30000("30000", "id不能为空"),
	CODE30001("30001", "提单号不能为空"),
	CODE30002("30002", "船名不能包含中文"),
	CODE30003("30003", "请先勾选运输单"),
	CODE30004("30004", "只能选择少于两条运输单，进行双托操作"),
	CODE30005("30005", "只能修改箱型为20GP的运输单信息"),
	CODE30006("30006", "运输单提单号不相同"),
	CODE30007("30007", "勾选已经是双托状态，不能重复修改"),
	CODE30008("30008", "司机手机号，车牌，姓名不能为空"),
	CODE30009("30009", "箱经营人不能为空"),
	CODE30010("30010", "不同客户名称，手机号不能相同哦"),
	CODE30011("30011", "客户信息已存在"),
	CODE30012("30012", "请选择两个相同的提单号"),
	CODE30013("30013", "车队eir号不能为空"),
	CODE30014("30014", "与运单的进出口类型不匹配，请仔细核对哦"),
	CODE30015("30015", "出口获取eir时，放箱提单号不能为空"),
	CODE30016("30016", "排序设置数据参数为空"),
	CODE30017("30017", "模板名称不能为空"),
	CODE30018("30018", "添加模板参数为空"),
	CODE30019("30019", "抱歉，已经有相同名称的模板了，请给它换个名字哦！"),
	CODE30020("30020", "未获取到任何要导出的信息"),
	CODE30021("30021", "未获取到模板信息"),
	CODE30022("30022", "该名称已存在，请换一个税率名称"),
	CODE30023("30023", "该名称已存在，请换一个哦^_^"),
	CODE30024("30024", "客户联系人不能为空"),
	CODE30025("30025", "该运单是未关帐状态，可直接在运单详情中修改，不需要新增增补单哦"),
	CODE30026("30026", "非常抱歉，该运单的费用信息拉取失败，请及时联系管理员查看^_^"),
	CODE30027("30027", "抱歉不能关账，所选运单中有司机未关帐的运单，运单号为"),
	CODE30028("30028", "关账失败，请联系管理员查看^_^"),
	CODE30029("30029", "抱歉，未获取到任何要关账的运单信息"),
	CODE30030("30030", "未查询到派单记录，请联系管理员查看哦"),
	CODE30031("30031", "未查询该运单的费用信息，请联系管理员查看哦"),
	CODE30032("30032", "选择的账期开始时间必须是上周的"),
	CODE30033("30033", "选择的账期截止时间必须是上周的"),
	CODE30034("30034", "工作流回执状态解析为空，请联系管理员查看信息"),
	CODE30035("30035", "提交工作流信息错误"),
	CODE30036("30036", "未设置税率"),
	CODE30037("30037", "无做箱日期"),
	CODE30042("30042", "无箱号信息"),
	CODE30038("30038", "码头公司中存在多条默认数据，请前往基础资料修改"),
	CODE30039("30039", "码头公司中没有默认信息，请前往基础资料新增一条默认数据"),
	CODE30040("30040", "套箱公司中存在多条默认数据，请前往基础资料修改"),
	CODE30041("30041", "套箱公司中没有默认信息，请前往基础资料新增一条默认数据"),
	CODE30043("30043", "选择的账期截止时间必须是七天以前的"),
	CODE30044("30044", "没有需要关账的数据，请查看该条件下的运单是否都已关账"),
	CODE30045("30045", "暂落箱运输单新增失败，请联系管理员查看"),
	CODE30046("30046", "暂落箱运输单费用新增失败，请联系管理员查看"),
	CODE30047("30047", "请查看驾驶员或车队是否全部设置税率"),
	CODE30048("30048", "客户委托主体不能为空"),
	CODE30049("30049", "放箱公司不能为空"),
	CODE30050("30050", "外发车队不能为空"),
	CODE30051("30051", "承运人不能为空"),
	CODE30052("30052", "码头公司名称不能为空"),
	CODE30053("30053", "套箱公司名称不能为空"),
	CODE30054("30054", "没有需要要派单的运单"),
	CODE30055("30055", "客户委托主体不能为空"),
	CODE30056("30056", "箱型不能为空"),
	CODE30057("30057", "客户委托主体不能为空"),
	CODE30058("30058", "客户委托主体不能为空"),
	CODE30059("30059", "客户委托主体不能为空"),
	CODE30060("30060", "选择的账期截止时间必须是一天以前的"),
	CODE30061("30061", "Code已过期"),
	CODE30062("30062", "Code已被使用"),
	CODE30063("30063", "未勾选运单"),
	CODE30064("30064", "上港eir平台发生故障，请联系开发人员"),
	CODE30065("30065", "船信息token获取失败，请联系管理员查看"),


	;

	private String code;
	private String description;

	ExceptionEnum(String code, String description) {
		this.code = code;
		this.description = description;
	}

	public static ExceptionEnum getByCode(String code) {
		for (ExceptionEnum checkStatus : values()) {
			if (checkStatus.code.equals(code)) {
				return checkStatus;
			}
		}
		return null;
	}

	public String getCode() {
		return code;
	}

	public String getDescription() {
		return description;
	}
}
